const mongoose = require('mongoose')
const joi = require('joi')

const User = mongoose.model('User', new mongoose.Schema({
  name: {
    type: String,
    minlength: 2,
    maxlength: 15,
    required: true
  },
  email: {
    type: String,
    // 唯一的  保证邮箱在插入时不会重复
    unique: true
  },
  password: {
    type: String,
    minlength: 5,
    maxlength: 20
  },
  role: {
    type: String,
    enum: ['普通用户', '超级管理员']
  },
  state: {
    type: String,
    enum: ['启用', '禁用']
  }
}))

// 将每个不用的验证规则放到不同的js文件中 有利于分类
const validateUser = (user) => {
  // 定义对象的验证规则
  const schema = {
    name: joi.string().min(2).max(12).required().error(new Error('用户名不符合规则')),
    email: joi.string().email().required().error(new Error('邮箱不符合规则')),
    password: joi.string().
      min(5).
      max(15).
      required().
      error(new Error('密码不符合规则')),
    // 这里的valid就类似于 enum  只能传入这valid中的值 传入其他的就会验证失败
    role: joi.string().
      valid('普通用户', '超级管理员').
      required().
      error(new Error('角色信息不符合规则')),
    state: joi.string().valid('启用', '禁用').required().error(new Error('状态不符合规则'))
  }
  return joi.validate(user, schema)
}
// User.create({
//   name: 'itZx',
//   email: '1097341044@qq.com',
//   password: '361230312.,',
//   role: '超级管理员',
//   state: '启用'
// })
module.exports = {
  User, validateUser
}